package io.github.talelin.latticy.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 积分记录VO
 * @author talelin
 */
@Data
public class PointsRecordVO {

    /**
     * 主键ID
     */
    private Integer id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 积分变动类型：earned(获得), used(使用), expired(过期), adjusted(调整)
     */
    private String type;

    /**
     * 积分数量
     */
    private Integer points;

    /**
     * 积分标题
     */
    private String title;

    /**
     * 积分描述
     */
    private String description;

    /**
     * 积分来源/用途：purchase(购买), signin(签到), activity(活动), exchange(兑换), admin(管理员调整)等
     */
    private String source;

    /**
     * 关联订单ID
     */
    private Long orderId;

    /**
     * 状态：success(成功), pending(处理中), failed(失败), expired(已过期)
     */
    private String status;

    /**
     * 过期时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime expireDate;

    /**
     * 额外信息（JSON格式）
     */
    private String extra;

    /**
     * 变动前积分余额
     */
    private Integer balanceBefore;

    /**
     * 变动后积分余额
     */
    private Integer balanceAfter;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
}

